package com.cn.springcloudwechat.service.personalcenter.serviceImpl;

import com.cn.springcloudwechat.mapper.mapper.dto.AreaDtoMapper;
import com.cn.springcloudwechat.model.dto.AreaDdto;
import com.cn.springcloudwechat.model.dto.AreaDto;
import com.cn.springcloudwechat.model.dto.StationDto;
import com.cn.springcloudwechat.service.personalcenter.service.AreaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service("AreaService")
public class AreaServiceImpl implements AreaService{

    @Autowired
    AreaDtoMapper areaDtoMapper;

    @Override
    public List<AreaDto> queryYmArea() {
        //查询省集合
        List<AreaDto> provinces = areaDtoMapper.getProvince();
        //查询市集合
        List<AreaDto> cities = areaDtoMapper.getCity();
        //查询区，县集合
        List<AreaDto> countries = areaDtoMapper.getCountry();
        for(AreaDto areaDto1 : provinces){
            Long pid = areaDto1.getId();
            List<AreaDto> pChildrens = new ArrayList<>();
            for(AreaDto areaDto2 : cities){
                Long cPrentId = areaDto2.getPerentId();
                if(pid.equals(cPrentId)){
                    pChildrens.add(areaDto2);
                }
                Long cId = areaDto2.getId();
                List<AreaDto> cChildrens = new ArrayList<>();
                for(AreaDto areaDto3 : countries){
                    Long kPrentId = areaDto3.getPerentId();
                    if(cId.equals(kPrentId)){
                        cChildrens.add(areaDto3);
                    }
                }
                areaDto2.setChild(cChildrens);
            }
            areaDto1.setChild(pChildrens);
        }
        return provinces;
    }




    @Override
    public List<StationDto> getStationDto(Long countyAreaId,Long cityAreaId,Long provinceAreaId) {
        List<StationDto> stationDtos = areaDtoMapper.getStationDto(countyAreaId,cityAreaId,provinceAreaId);
        return stationDtos;
    }

    @Override
    public Map<String,Object> getArea() {
        //查询省集合
        List<AreaDto> provinces = areaDtoMapper.getProvince();
        //查询市集合
        List<AreaDto> cities = areaDtoMapper.getCity();
        //查询区，县集合
        List<AreaDto> countries = areaDtoMapper.getCountry();
        Map<String,Object> map1 = new HashMap<>();
        Map<String,String> map2 = new HashMap<>();
        for(AreaDto areaDto1 : provinces){
            Map<String,String> map3 = new HashMap<>();
            map2.put(String.valueOf(areaDto1.getId()),areaDto1.getName());
            for (AreaDto areaDto2 :cities){
                Map<String,String> map4 = new HashMap<>();
                if(areaDto1.getId().equals(areaDto2.getPerentId())){
                    map3.put(String.valueOf(areaDto2.getId()),areaDto2.getName());
                }
                for (AreaDto areaDto3 :countries){
                    if(areaDto2.getId().equals(areaDto3.getPerentId())){
                        map4.put(String.valueOf(areaDto3.getId()),areaDto3.getName());
                    }
                }
                map1.put(String.valueOf(areaDto2.getId()),map4);
            }
            map1.put(String.valueOf(areaDto1.getId()),map3);
        }
        map1.put("0",map2);
        return map1;
    }

    @Override
    public List<AreaDto> getAreaByPerentId(String perentId) {
        return areaDtoMapper.getAreaByPerentId(perentId);
    }

    @Override
    public List<AreaDto> getProvince() {
        return areaDtoMapper.getProvince();
    }

    /**
     * 后端疫苗查询地区用
     * @return
     */
    @Override
    public List<AreaDto> queryYmAreaVaStation() {
        //查询省集合
        List<AreaDto> provinces = areaDtoMapper.getProvince();
        //查询市集合
        List<AreaDto> cities = areaDtoMapper.getCity();
        //查询区，县集合
        List<AreaDto> countries = areaDtoMapper.getCountry();
        for(AreaDto areaDto1 : provinces){
            Long pid = areaDto1.getId();
            List<AreaDto> pChildrens = new ArrayList<>();
            for(AreaDto areaDto2 : cities){
                Long cPrentId = areaDto2.getPerentId();
                if(pid.equals(cPrentId)){
                    pChildrens.add(areaDto2);
                }
                Long cId = areaDto2.getId();
                List<AreaDto> cChildrens = new ArrayList<>();
                for(AreaDto areaDto3 : countries){
                    Long kPrentId = areaDto3.getPerentId();
                    if(cId.equals(kPrentId)){
                        areaDto3.setType("3");
                        cChildrens.add(areaDto3);
                    }
                }
                areaDto2.setType("2");
                if(cChildrens.size() != 0){
                    areaDto2.setChildren(cChildrens);
                }
            }
            areaDto1.setChildren(pChildrens);
            areaDto1.setType("1");
        }
        return provinces;
    }

}
